// 全局拦截
import axios from 'axios'
import store from './store/index'
import router from './router'

// token要放在我们请求的header上面带回去给后端

export default function setAxios () { // 请求拦截 格式定死的
  axios.interceptors.request.use(
    config => {
      if (store.state.token) {
        config.headers.token = store.state.token // 带给后端
      }
      return config
    }
  )
  // 每次请求有返回的，都是先经过这个拦截器的
  axios.interceptors.response.use( // 检测登录是否 正确、错误、过期
    response => {
      if (response.status == 200) {
        const data = response.data // 登录注册页面就可以少写一个data
        if (data.code == -1) { // 登录过期，需要重新登录，清空vuex的token和localStorage的token，并跳转登录页面
          state.commit('setToken', '') // 清空vuex的token
          localStorage.removeItem('token') // 清空localStorage的token
          router.replace({ path: '/login' }) // 跳转到登陆页面
        }
        return data
      }
      return response
    }
  )
}
